package com.ly.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
* Knife4j配置
* 作者:临渊
* 当前时间 2025/8/12 0:05
* application.yml文件需要改动 降级路径匹配策略（兼容旧版Spring Boot 2.6+ 默认使用 PathPatternParser，而 Knife4j 2.x 依赖的 Springfox 需要 AntPathMatcher）
* spring:
*   mvc:
*     pathmatch:
*       #解决 高版本SpringBoot整合Swagger 启动报错Failed to start bean 'documentationPluginsBootstrapper' 问题
*       matching-strategy: ant_path_matcher
*/
@Configuration
@EnableSwagger2
public class Knife4jConfig {
    @Bean
    public Docket adminApiConfig() {
        Docket adminApi = new Docket(DocumentationType.SWAGGER_2)
                .groupName("临渊系统脚手架API文档")
                .apiInfo(adminApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.ly.controller"))//为当前包路径下,所有API都交给Swagger2管理
                .build();
        return adminApi;
    }

    //本地访问 端口根据具体项目改变 http://localhost:9700/doc.html
    private ApiInfo adminApiInfo() {
        return new ApiInfoBuilder()
                .title("临渊系统API接口文档") //网站的标题
                .license("临渊协议") //协议
                .description("临渊系统脚手架API文档") //描述
                .version("1.0.0")//版本号
                .build();
    }
}
